{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 299
    },
    "colab_type": "code",
    "id": "Hh4nSZeCBYoB",
    "outputId": "9956b151-4de2-4e95-f046-1d06cfaa7450"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2020-07-08 11:23:10--  https://storage.googleapis.com/kaggle-data-sets/9726%2F17999%2Fbundle%2Farchive.zip?GoogleAccessId=gcp-kaggle-com@kaggle-161607.iam.gserviceaccount.com&Expires=1594430725&Signature=nLHSdWDbL1VJvFKqprTGgrg3zqrl2AblOk3Of6UMZdwzmNULLGqy0j4W12kZcwApsZ5V32SY4NMZt4SKOgkkXSTRBXA2nsxgc71hmvDMs%2FGcUI6Jfuej2ZogI7u4cXGkZ3sylfQ%2B8Alm14zIcT88HvGEQua6zJ3O45h8fTfoso%2FqCaX5BOaoQq5xDFW%2FgYCOp%2BzXLFRjeE4OZoTND7IVEEdtfGxjmAdu8zK60KIktRJy6%2B38yR%2B6FBtKE6jg18Lq7P%2F%2FjCRxLp8dQQ6r4Y23FLkAA3J7mXWLsPy7JBkiVHxMMX6REGUPzZnmBN%2BkjExGNQsTLRTJtITRRmeSjvqx5A%3D%3D\n",
      "Resolving storage.googleapis.com (storage.googleapis.com)... 173.194.216.128, 172.217.193.128, 172.217.204.128, ...\n",
      "Connecting to storage.googleapis.com (storage.googleapis.com)|173.194.216.128|:443... connected.\n",
      "HTTP request sent, awaiting response... 200 OK\n",
      "Length: 193643888 (185M) [application/zip]\n",
      "Saving to: ‘handwritten-data.zip’\n",
      "\n",
      "handwritten-data.zi 100%[===================>] 184.67M   114MB/s    in 1.6s    \n",
      "\n",
      "2020-07-08 11:23:12 (114 MB/s) - ‘handwritten-data.zip’ saved [193643888/193643888]\n",
      "\n",
      "Archive:  handwritten-data.zip\n",
      "  inflating: A_Z Handwritten Data.csv  \n",
      "  inflating: A_Z Handwritten Data/A_Z Handwritten Data.csv  \n"
     ]
    }
   ],
   "source": [
    "!wget -O handwritten-data.zip \"https://storage.googleapis.com/kaggle-data-sets/9726%2F17999%2Fbundle%2Farchive.zip?GoogleAccessId=gcp-kaggle-com@kaggle-161607.iam.gserviceaccount.com&Expires=1594430725&Signature=nLHSdWDbL1VJvFKqprTGgrg3zqrl2AblOk3Of6UMZdwzmNULLGqy0j4W12kZcwApsZ5V32SY4NMZt4SKOgkkXSTRBXA2nsxgc71hmvDMs%2FGcUI6Jfuej2ZogI7u4cXGkZ3sylfQ%2B8Alm14zIcT88HvGEQua6zJ3O45h8fTfoso%2FqCaX5BOaoQq5xDFW%2FgYCOp%2BzXLFRjeE4OZoTND7IVEEdtfGxjmAdu8zK60KIktRJy6%2B38yR%2B6FBtKE6jg18Lq7P%2F%2FjCRxLp8dQQ6r4Y23FLkAA3J7mXWLsPy7JBkiVHxMMX6REGUPzZnmBN%2BkjExGNQsTLRTJtITRRmeSjvqx5A%3D%3D\" \n",
    "!unzip handwritten-data.zip"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 93
    },
    "colab_type": "code",
    "id": "h__izB_KBbOl",
    "outputId": "0fa076e0-3acb-467d-93a9-aa12279011d3"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n",
      "  import pandas.util.testing as tm\n",
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import numpy as np \n",
    "import pandas as pd \n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import os\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "import tensorflow as tf\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import Dropout\n",
    "from keras.layers import Flatten\n",
    "from keras.layers.convolutional import Conv2D #convolution layer\n",
    "from keras.layers.convolutional import MaxPooling2D\n",
    "from keras import backend as K\n",
    "from keras.utils import np_utils\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import confusion_matrix # evaluate the accuracy\n",
    "\n",
    "#ignore warning messages \n",
    "import warnings\n",
    "warnings.filterwarnings('ignore') \n",
    "\n",
    "sns.set()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "uVVp3uwKCcTl"
   },
   "outputs": [],
   "source": [
    "dataset = pd.read_csv(\"./A_Z Handwritten Data.csv\").astype('float32')\n",
    "dataset.rename(columns={'0':'label'}, inplace=True)\n",
    "\n",
    "# Split input and target\n",
    "X = dataset.drop('label',axis = 1)\n",
    "y = dataset['label']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 36
    },
    "colab_type": "code",
    "id": "P8v3ohdIDhqO",
    "outputId": "622d86b9-0563-4dc0-9c15-32a0a0d8afdd"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape: (372450, 784)\n"
     ]
    }
   ],
   "source": [
    "print(\"shape:\",X.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 575
    },
    "colab_type": "code",
    "id": "jEYRMwizDvZf",
    "outputId": "efd89fd3-5954-435b-a2d0-876eb2e4248f"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.utils import shuffle\n",
    "\n",
    "X_shuffle = shuffle(X)\n",
    "\n",
    "plt.figure(figsize = (12,10))\n",
    "row, colums = 4, 4\n",
    "for i in range(16):  \n",
    "    plt.subplot(colums, row, i+1)\n",
    "    plt.axis('off')\n",
    "    plt.imshow(X_shuffle.iloc[i].values.reshape(28,28),interpolation='nearest', cmap='Greys')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 613
    },
    "colab_type": "code",
    "id": "-6q9276sEJfM",
    "outputId": "9f14bfb0-7912-4ffa-8934-a3524917f6cf"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Amount of each labels\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(\"Amount of each labels\")\n",
    "\n",
    "# Change label to alphabets\n",
    "alphabets_mapper = {0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H',8:'I',9:'J',10:'K',11:'L',12:'M',13:'N',14:'O',15:'P',16:'Q',17:'R',18:'S',19:'T',20:'U',21:'V',22:'W',23:'X',24:'Y',25:'Z'} \n",
    "dataset_alphabets = dataset.copy()\n",
    "dataset['label'] = dataset['label'].map(alphabets_mapper)\n",
    "\n",
    "label_size = dataset.groupby('label').size()\n",
    "label_size.plot.barh(figsize=(10,10))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 301
    },
    "colab_type": "code",
    "id": "FMx3jmsYFVMw",
    "outputId": "00e670bb-69b3-4e1f-eb5f-635263610606"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history.history['loss'])\n",
    "plt.plot(history.history['val_loss'])\n",
    "plt.title('Model loss')\n",
    "plt.ylabel('Loss')\n",
    "plt.xlabel('Epoch')\n",
    "plt.legend(['Train', 'Test'], loc='upper left')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 594
    },
    "colab_type": "code",
    "id": "_V_yT5J5Fe4O",
    "outputId": "7504573e-23a9-4d40-942c-3d987d2fab42"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data after scaler\n"
     ]
    },
    {
     "data": {
      "image/png": "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mcz4wIwX7kACAADACQUkAAAAnFBAAgAAwEnYeyDHjx8v8v79+61zSpQoIbLejLZIkSJBn5d+eboxdm9N//79RfbqedRKliwpcvPmzX3+HNFjz549ztfUqlUrBDMJvj/++EPke+65xzrn0KFDTmO+/fbb1rFY2jgdode4cWORN27c6PeahIQE58/RG5qnpaU5j4HYcPHiRZF/+uknkd966y2Rz507Z41RuHBhkfv16yey7u3F/8cdSAAAADihgAQAAIATCkgAAAA4CXsPpO4/0Hs2GWPMmDFjRK5du7bI2bNnD3geuudx+vTp1jl6D7szZ874HPPuu++2jun+i0qVKqV3ioiwHj16OF/z8MMPh2AmgdN7mPbt21dk135HY4ypVq2ayHfccYfzGACQXl71wtdffy3yO++8I/LevXtF9nqG4plnnhG5YcOGGZ1ipsIdSAAAADihgAQAAIATCkgAAAA4CXkP5Pr160XWe+tduXLFuka/TzgxMdH5c/W4+r2+us9S91EY47/n8YYbbhC5a9eu1jm659Hr/bGITt27dxd56NChEZqJ9Oeff4rs9c7qCRMmiLx48WKRU1JSnD9X74W2YsUKkbNmDXtLNdLp0qVLInv1vLq+t7xUqVLWsVGjRomclJTkcwyv79hgvD9d7yWM+LB7927rmO5VP3LkiMj6vdV6X2ljjHnhhRdEzpMnT0anmKlwBxIAAABOKCABAADghAISAAAATiggAQAA4CTkXe9vvvmmyAcOHBDZ6yX3hw8fFjk1NVVkvZH46dOnrTFmzJghsn6oYP/+/d4T/i+5c+cWuX379iL3799f5LJly1pj8NBM7GrWrJnI6XmIZu3atSK3atUq4Hnoh2YeeOABkZcsWRLwZ6THN998I3KBAgXC8rlwpzdPHj58uMjvv/9+wJ9RuHBh65h++OCVV14J+HMyQn/fIzbp7z79sIsx9kMzWuvWrUXu06ePdQ4PzWQMdyABAADghAISAAAATiggAQAA4CTBqwfxv/j8YXrcdNNNIv/4449+rylevLjIt99+u8iFChUS+aeffrLG2LZtm8jnz593+kxjjHnyySdF1i9c9+oBiiEJkZ5AiAW8dmfNmiVy586d/V7TqVMnkdu0aePzfK/+nREjRoh88eJFkU+cOOF3Hq702jbGmIEDB4pctGhRkRMSIraEWLt+RPDfTch1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iTx79mzrHL23dJcuXUTW+6oWLlzYeR7BxB1IAAAAOKGABAAAgBMKSAAAADgJeQ+k3rMwGO++Ll26tMgVKlSwzglFz6OmeynOnDljnXPq1KmQzwPR48KFCyJ//fXXIut3w6eH3rNUv78+VO92veOOO0Tu37+/yFmzxmQLNTIoJSVF5CVLlljn6D6vW2+91flzdB9llizc50DweH1vNWzYUGS9f/Pu3btF/vTTT60x9DF/e0mePn3aOvbBBx+I/OWXX4r86KOPiqy/k43x3hc7VPjNBAAAgBMKSAAAADihgAQAAIATCkgAAAA4SdAN+YrPH6aH3kj7xx9/dB6jatWqIr/11lsi33777dY1OXPmdP4cf65cuSLynj17RO7Xr591zcKFCwP+3GrVqom8bdu2gMc0xiQEY5AoFvDaDYZZs2aJPHjwYJH9NVobY8ygQYNE1uth0qRJ1jXLli1L5wz/Xt68eUXu1KmTyK+//rrP80OItetHQkLo/xEVKVLEOqZfpqCb/tNDP8BQqlQp5zH80Zuih3ED9Hheu1HxnRsOXi9zOHr0qMhz5swReeTIkSL/+eefzp97yy23iDx37lzrHK+HioPAc91yBxIAAABOKCABAADghAISAAAATmJiJ+BatWqJXLlyZZFD0e/o5eeffxZZb+IZjH5HxA69yasxxhw7dkzkjRs3ipycnOx3XN3n0qRJE5Hr1q0rsu4RNsaYGTNmiLxu3TqRdR+t1yb4us9Hb4p+7733inzfffdZYyB+eb0kQR9bv36987h33323yLrnNxjatWsnslffmO6TBP6XV793xYoVRe7du7fIRYsWFfmJJ54I/sTCjDuQAAAAcEIBCQAAACcUkAAAAHASlftA6h7Hzz77zOfPs2TxXwdfvHhR5KSkJJGnTZtmXTNx4kSRU1JSRD537pzIep/IjLj++uutY7q38oYbbgj4c0x870dmTBj2JGvatKl1bMmSJU5j6L4YY4x54403RG7btq3IuXPndvoMY4w5cOCAyK+88orIM2fO9DuG3uNvzJgxIoexB5K160fHjh1F1t8hGdmDLp7oPuI77rjDOqdXr14ilyhRIhgfHc9rN9PsA5kRFy5cENnrmYnu3buLrPvQda1z6623WmPocUO5brkDCQAAACcUkAAAAHBCAQkAAAAnId8HsmXLliIfOnRIZK/9586ePSvy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\n",
      "text/plain": [
       "<Figure size 864x720 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# splite the data, X:0~255\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y)\n",
    "\n",
    "# 映射到0~1\n",
    "standard_scaler = MinMaxScaler()\n",
    "standard_scaler.fit(X)\n",
    "\n",
    "X_train = standard_scaler.transform(X_train) \n",
    "X_test = standard_scaler.transform(X_test)\n",
    "\n",
    "print(\"Data after scaler\")\n",
    "X_shuffle = shuffle(X_train)\n",
    "\n",
    "plt.figure(figsize = (12,10))\n",
    "row, colums = 4, 4\n",
    "for i in range(16):  \n",
    "    plt.subplot(colums, row, i+1)\n",
    "    plt.axis('off')\n",
    "    plt.imshow(X_shuffle[i].reshape(28,28),interpolation='nearest', cmap='Greys')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "IFYMvUCdGH_W"
   },
   "outputs": [],
   "source": [
    "X_train = X_train.reshape(X_train.shape[0], 28, 28, 1).astype('float32')\n",
    "X_test = X_test.reshape(X_test.shape[0], 28, 28, 1).astype('float32')\n",
    "\n",
    "y_train = np_utils.to_categorical(y_train)\n",
    "y_test = np_utils.to_categorical(y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "a6Vyds1OG4sQ"
   },
   "outputs": [],
   "source": [
    "num_classes = y_test.shape[1] \n",
    "model = Sequential()\n",
    "\n",
    "model.add(Conv2D(64, (5, 5), input_shape=(28, 28, 1), activation='relu', data_format=\"channels_last\", padding=\"same\")) # input and convolution layer\n",
    "model.add(Conv2D(64, (5, 5), input_shape=(28, 28, 1), activation='relu', data_format=\"channels_last\", padding=\"same\"))\n",
    "model.add(MaxPooling2D(pool_size=(2, 2))) # Pooling layer\n",
    "# hidden\n",
    "model.add(Conv2D(128, (3, 3), activation='relu', data_format=\"channels_last\", padding=\"same\")) # the second convolution layer\n",
    "model.add(Conv2D(128, (3, 3), activation='relu', data_format=\"channels_last\", padding=\"same\"))\n",
    "model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "\n",
    "model.add(Dropout(0.2)) # dropout layer\n",
    "\n",
    "model.add(Flatten()) # 2d to 1d\n",
    "model.add(Dense(128, activation='relu')) # density layer\n",
    "model.add(Dense(num_classes, activation='softmax')) # output layer \n",
    "\n",
    "model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 428
    },
    "colab_type": "code",
    "id": "exCs0OhUG5ZG",
    "outputId": "4c496e1f-0290-4d20-e95e-c50db13645c1"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 279337 samples, validate on 93113 samples\n",
      "Epoch 1/10\n",
      " - 84s - loss: 0.1619 - accuracy: 0.9539 - val_loss: 0.0525 - val_accuracy: 0.9863\n",
      "Epoch 2/10\n",
      " - 77s - loss: 0.0464 - accuracy: 0.9869 - val_loss: 0.0435 - val_accuracy: 0.9886\n",
      "Epoch 3/10\n",
      " - 77s - loss: 0.0342 - accuracy: 0.9900 - val_loss: 0.0329 - val_accuracy: 0.9911\n",
      "Epoch 4/10\n",
      " - 78s - loss: 0.0268 - accuracy: 0.9920 - val_loss: 0.0320 - val_accuracy: 0.9913\n",
      "Epoch 5/10\n",
      " - 78s - loss: 0.0218 - accuracy: 0.9935 - val_loss: 0.0304 - val_accuracy: 0.9917\n",
      "Epoch 6/10\n",
      " - 77s - loss: 0.0177 - accuracy: 0.9945 - val_loss: 0.0274 - val_accuracy: 0.9935\n",
      "Epoch 7/10\n",
      " - 77s - loss: 0.0149 - accuracy: 0.9952 - val_loss: 0.0232 - val_accuracy: 0.9940\n",
      "Epoch 8/10\n",
      " - 78s - loss: 0.0127 - accuracy: 0.9958 - val_loss: 0.0260 - val_accuracy: 0.9939\n",
      "Epoch 9/10\n",
      " - 77s - loss: 0.0115 - accuracy: 0.9961 - val_loss: 0.0254 - val_accuracy: 0.9952\n",
      "Epoch 10/10\n",
      " - 77s - loss: 0.0102 - accuracy: 0.9966 - val_loss: 0.0312 - val_accuracy: 0.9932\n",
      "CNN Error: 0.68%\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=256, verbose=2)\n",
    "\n",
    "# Evaluation of the model\n",
    "scores = model.evaluate(X_test,y_test, verbose=0)\n",
    "print(\"CNN Error: %.2f%%\" % (100-scores[1]*100))\n",
    "\n",
    "model.save('model.kmd')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 148
    },
    "colab_type": "code",
    "id": "hUTIdMtfHJEY",
    "outputId": "b286a773-57b0-4be2-d44f-76b95a64e7c6"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1.9339702e-25, 5.9846655e-21, 1.1034298e-14, 8.2828047e-22,\n",
       "        1.0637664e-10, 8.3256237e-13, 7.8556063e-08, 2.2882483e-20,\n",
       "        2.0886192e-23, 6.8959899e-12, 8.0953115e-16, 5.3915934e-15,\n",
       "        5.1271700e-26, 1.7887384e-26, 3.2863614e-15, 4.1364439e-25,\n",
       "        3.1279374e-21, 6.1969227e-26, 9.9999988e-01, 1.1655680e-17,\n",
       "        7.2705164e-19, 7.4842321e-22, 1.1516607e-22, 1.2421141e-17,\n",
       "        6.9089042e-16, 3.0098808e-14]], dtype=float32)"
      ]
     },
     "execution_count": 14,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.predict(X_test[0:1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Y1Dy3lPdHjrJ"
   },
   "outputs": [],
   "source": [
    "from keras.models import load_model\n",
    "new_model = load_model('model.kmd')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "28uZMtmWMtcr"
   },
   "outputs": [],
   "source": [
    "k = new_model.predict(X_test[0].reshape((1, 28, 28, 1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 36
    },
    "colab_type": "code",
    "id": "3dhfwBGiM-GL",
    "outputId": "aa5f2a4d-fa1f-4783-eeb6-33f01cec4b6e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 28, 28, 1)"
      ]
     },
     "execution_count": 75,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test[0].reshape((1, 28, 28, 1)).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 635
    },
    "colab_type": "code",
    "id": "XwPZHVe1NsfZ",
    "outputId": "651c39be-27af-46bb-94f2-496fe42dd38b"
   },
   "outputs": [],
   "source": [
    "import os\n",
    "from skimage import io\n",
    "import torchvision.datasets.mnist as mnist\n",
    "import numpy \n",
    "def convert_to_img():\n",
    "    root = './data'\n",
    "    data_path = root + '/train/'\n",
    "    if(not os.path.exists(data_path)):\n",
    "        os.makedirs(data_path)\n",
    "    for i, img in enumerate(X_test):\n",
    "        x = img * 255\n",
    "        x.reshape((28, 28));\n",
    "        x.astype('int')\n",
    "        img_path = data_path + str(i) + '.jpg'\n",
    "        io.imsave(img_path, x)\n",
    "        if i > 30:\n",
    "            break\n",
    "convert_to_img()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "JsbG4tKYOtyJ"
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [],
   "name": "Untitled",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
